/**
 * ClassName: dome02
 * Package: PACKAGE_NAME
 * Description:
 *
 * @Author 蒋林康
 * @Create 2023/12/10 12:46
 * @Version 1.0
 */
package com.computer.java;

interface USB{
    //常量：定义了长、宽、最大最小的传输速度等
    void start();//开始工作
    void stop();//结束工作
}

class Flash implements USB{
    @Override
    public void start() {
        System.out.println("U盘开启工作");
    }
    @Override
    public void stop() {
        System.out.println("U盘结束工作");
    }
}

class Printer implements USB{
    @Override
    public void start() {
        System.out.println("打印机开启工作");
    }
    @Override
    public void stop() {
        System.out.println("打印机结束工作");
    }
}

class Computer{
    public void transferData(USB usb){//USB usb = new Flash();
        //持有对方的引用
        usb.start();
        System.out.println("具体传输数据的细节");
        usb.stop();
    }
}

public class dome02 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Computer com = new Computer();//创建了一台计算机
        Flash flash = new Flash();//创建了一个Flash
        com.transferData(flash);
        //Printer printer = new Printer();
        //com.transferData(printer);
        com.transferData(new Printer());
        //2. 创建了接口的非匿名实现类（Printer）的匿名对象

        //3. 创建了接口的匿名实现类的非匿名对象
        //4.匿名类就是没有名字的类，类里能干的事情她都可以做
        //可以使模块化更加高，内部类访问外部类的成员和方法
        USB phone = new USB() {
            @Override
            public void start() {
                System.out.println("手机开启工作");
            }
            @Override
            public void stop() {
                System.out.println("手机结束工作");
            }
        };

        com.transferData(phone);

    }

}